Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

WinDbg

帖子发起人: cato   发起时间: 2009-06-08 10:32 上午   回复: 1

Print Search
帖子排序:    
   2009-06-08, 10:32 上午
cato 离线,最后访问时间: 2009/6/8 10:24:50 cato

发帖数前500位
注册: 2009-06-08
发 贴: 1
如何显示一个模块的导入表?
Reply Quote
用windbg x命令可以显示被加载模块的符号,但需要符号文件.如果没有符号文件的情况下,请问如何在调试时显示一个被加载模块(EXE或DLL)的导入表呢?谢谢
IP 地址: 已记录   报告
   2009-06-08, 13:08 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 如何显示一个模块的导入表?
Reply Quote

下面这样做不知是否满足你的要求?

1, lm命令找到模块的起始地址

0:001> lm vm notepad

start end module name 01000000 01014000 notepad

2, !dh 命令显示PE头信息,注意下面这样的一行:

!dh 01000000 ... 1000 [ 348] address [size] of Import Address Table Directory

3, 使用dd或者dds命令观察导入表

0:001> dds 01000000+1000 l (348/4)
01001000  77dd6fc8 ADVAPI32!RegQueryValueExW
01001004  77dd6bf0 ADVAPI32!RegCloseKey
01001008  77df8f7d ADVAPI32!RegCreateKeyW
0100100c  77dfd5fd ADVAPI32!IsTextUnicode
01001010  77dd7883 ADVAPI32!RegQueryValueExA
01001014  77dd761b ADVAPI32!RegOpenKeyExA
01001018  77ddd7cc ADVAPI32!RegSetValueExW
0100101c  00000000
01001020  773dd260 COMCTL32!CreateStatusWindowW
01001024  00000000
01001028  77f2d7e9 GDI32!EndPage

...

因为系统在加载模块时会修改导入表,上面是加载完成时的状态

 


IP 地址: 已记录   报告
高端调试 » 软件调试 » WinDbg » 如何显示一个模块的导入表?

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.